var vm = new Vue({
    el:"#app",
    data:{
        uploader:null,
        selectFile:null,
        isShowForm:false,
        fileName:"",
        saveUrl:"",
        isEditMode:false //是否为编辑模式
    },
    methods:{
        /**
         * 初始化bootstrapTable
         */
        initTable:function(){
            var _this = this;
            $('#tbVersionManager').bootstrapTable($.extend(bootstrapTableOption,{
                url: g_comm.manager_url+'/versionManager/list',           //请求后台的URL（*）
                toolbar: '#toolbar',                          //工具按钮用哪个容器
                queryParams: _this.queryParams,               //传递参数（*）
                uniqueId: "id",                     //每一行的唯一标识，一般为主键列
                columns: [{
                    checkbox: true
                }, {
                    field: 'type',
                    title: '类型',//0：Android,1:IOS
                    formatter:function(value,row,index){
                        if(value==1){
                            return "IOS";
                        }
                        return "Android";
                    }
                }, {
                    field: 'versionCode',
                    title: '版本号'
                }, {
                    field: 'versionName',
                    title: '版本名'
                }, {
                    field: 'updateMode',
                    title: '版本升级模式',//0：可升级版本1：必须升级2：补丁
                    formatter:function(value,row,index){
                        if(value==1){
                            return "必须升级";
                        }else if(value==2){
                            return "补丁";
                        }
                        return "可升级版本";
                    }
                }, {
                    field: 'packageSize',
                    title: '安装包大小',
                    formatter:function(value,row,index){
                        return formatFileLenth(value);
                    }
                }, {
                    field: 'status',
                    title: '审核状态',
                    formatter:function(value,row,index){
                        if(value == 1){
                            return "审批通过";
                        }
                        return "未审批";
                    }
                }, {
                    field: 'downloadUrl',
                    title: '下载地址',
                    formatter:function(value,row,index){
                        return "<a href='"+value+"' target='_blank'>"+value+"</a> ";
                    }
                }, {
                    field: 'createTime',
                    title: '创建时间',
                    formatter:function(value,row,index){
                        return value?new Date(value).toString("yyyy-MM-dd HH:mm:ss"):"";
                    }
                }
                ],
                detailView: true,
                detailFormatter: function(index, row) {
                    var _html = '<p>文件MD5值：'+ row.appFileMd5 +'</p>' +
                        '<p>更新内容：'+ row.updateContent+'</p>'+
                        '<p>发布时间：'+ new Date(row.publishDate).toString("yyyy-MM-dd HH:mm:ss")+'</p>'
                    return _html;
                }
            }));
        },
        del:function(){
            //获取选中的行
            var selectRows = $('#tbVersionManager').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layer.alert('请选择要删除的数据!',{
                    title: '提示框',
                    icon:0
                });
                return;
            }
            var ids = [];
            $(selectRows).each(function (index, obj) {
                ids.push(obj.id);//使用#将id和保存路径拼接，服务端删除物理文件时需要用到
            });
            parent.layer.confirm("你确定是要删除吗！", {btn: ['确定','取消']},
                function(){//确定事件
                    //关闭confirm Dialog
                    parent.layer.closeAll('dialog');
                    $.ajax({
                        url: g_comm.manager_url+"/versionManager/delete",
                        contentType:"application/json",//以json的方式提交到服务端
                        data: JSON.stringify(ids),//序列化
                        success: function(r){
                            if(r.code == 0){
                                layer.msg('删除成功！', {icon: 1});
                                //重新刷新数据
                                $('#tbVersionManager').bootstrapTable('refresh');
                            }else{
                                layer.alert(r.msg,{
                                    title: '提示框',
                                    icon:0
                                });
                            }
                        }
                    });
                });
        },

        /**
         * 查询参数
         * @param params
         */
        queryParams:function (params) {
            return {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
                limit: params.limit,   //页面大小
                offset: params.offset,  //页码
                fileName:this.fileName
            };
        },
        initUploader:function(){
            this.uploader = new plupload.Uploader({
                browse_button : 'uploadBtn',//选择文件的按钮
                container : 'container',//文件上传容器
                runtimes : 'html5,flash',//设置运行环境，会按设置的顺序，可以选择的值有html5,gears,flash,silverlight,browserplus,html4
                flash_swf_url :'plugin/plupload-2.3.4/js/Moxie.swf',// Flash环境路径设置
                silverlight_xap_url : 'plugin/plupload-2.3.4/js/Moxie.xap',//silverlight环境路径设置
                url : g_comm.file_url+'/plUploadServlet',//处理上传文件的Controller
                max_file_size : '10gb',//100b, 10kb, 10mb, 1gb
                chunk_size : '1mb',//分块大小，小于这个大小的不分块
                unique_names : true,//生成唯一文件名
                multi_selection:false,//不允许多选
                multipart_params:{//上传时的附加参数，以键/值对的形式传入
                    "uploadType":"FASTDFS"//上传方式
                },
                // 如果可能的话，压缩图片大小
                // resize : { width : 320, height : 240, quality : 90 },
                /*
                 注释掉filters，解决在Chrome下选择文件时file打开很慢
                 // 指定要浏览的文件类型
                 filters : [ {
                 title : 'Image files',
                 extensions : 'jpg,gif,png'
                 }, {
                 title : 'Zip files',
                 extensions : 'zip,7z,rar'
                 } ],*/
                init : {
                    Init:function (uploader, params) {
                        //$('#filelist').html("<div>当前运行环境: " + params.runtime + "</div>");
                        $('#filelist').html("");
                    },
                    FileUploaded : function(up, file, info) {//当队列中的某一个文件上传完成后触发
                        console.log("队列中的某一个文件上传完成，触发FileUploaded",file);
                        var r = $.parseJSON(info.response);
                        if (r.code == 0) {
                            var data = r.data;
                            console.log("文件上传结果：",data);
                            $("#fileUrl").val(data.fileUrl);
                            $("#packageSize").val(data.fileLength);
                            $("#appFileMd5").val(data.fileMd5);
                            $("#downloadUrl").val(data.fileUrl);
                        }
                    },
                    BeforeUpload:function(uploader,file){//当队列中的某一个文件正要开始上传前触发
                        console.log("当队列中的某一个文件正要开始上传前触发BeforeUpload");
                        $('.plupload_delete').hide();
                    },
                    FilesAdded:function (uploader, files) {//选择文件后
                        console.log("选择的上传文件：",files);
                        $.each(files, function(i, file) {
                            $('#filelist').append('<div class="alert alert-info" style="width: 450px" id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>' + '&nbsp;<span onclick="vm.uploader.removeFile(vm.uploader.getFile($(this).parent().attr(\'id\')));$(this).parent().remove();" style="cursor: pointer;" class="plupload_delete">删除</span></div>');
                        });
                        vm.uploader.refresh();
                    }
                }
            });
            //初始化plupload
            this.uploader.init();
        },
        /**
         * 搜索
         */
        search:function () {
            $('#tbVersionManager').bootstrapTable('refreshOptions',{pageNumber:1});
        },
        initControl:function(){
            $("select").select2();//将页面上的select标签渲染成select2控件
        },
        validateForm:function(){
            if (getObjValByName('versionCode','input')==""){
                layerAlert('版本号不能为空');
                return false;
            }
            if (isNaN(getObjValByName('versionCode','input'))){
                layerAlert('版本名只能输入数字');
                return false;
            }
            if (getObjValByName('versionName','input')==""){
                layerAlert('版本名不能为空');
                return false;
            }
            return true;
        },
        save:function(){
            if(!this.validateForm()){
                return false;
            }
            if (this.uploader.files.length > 0) {// 判断队列中是否有文件需要上传
                //显示loading框
                layer.load(0, { shade: [0.5, '#393D49'] ,zIndex :2147483647});
                this.uploader.bind('UploadComplete', function(uploader,files) {// 在所有的文件上传完毕时，提交表单
                    $.ajax({
                        url:vm.saveUrl,
                        data:$("#dataForm").serialize(),
                        success:function(result){
                            if(result.code == 0){
                                layer.closeAll(); //疯狂模式，关闭所有层
                                layer.msg('操作成功！', {icon: 1});
                                $("#dataForm")[0].reset();//重置Form表单
                                $("#id").val("");//清空隐藏域中的id，避免由于有id导致当成更新操作
                                //重新刷新数据
                                $('#tbVersionManager').bootstrapTable('refresh');
                            }else{
                                layer.alert(result.msg,{
                                    title: '提示框',
                                    icon:0
                                });
                                return false;
                            }
                        }
                    });
                });
                //上传文件
                this.uploader.start();
            } else {
                if(!this.isEditMode){
                    layerAlert('请上传升级安装包！');
                }else {
                    $.ajax({
                        url:vm.saveUrl,
                        data:$("#dataForm").serialize(),
                        success:function(result){
                            if(result.code == 0){
                                layer.closeAll(); //疯狂模式，关闭所有层
                                layer.msg('操作成功！', {icon: 1});
                                $("#dataForm")[0].reset();//重置Form表单
                                $("#id").val("");//清空隐藏域中的id，避免由于有id导致当成更新操作
                                //重新刷新数据
                                $('#tbVersionManager').bootstrapTable('refresh');
                            }else{
                                layer.alert(result.msg,{
                                    title: '提示框',
                                    icon:0
                                });
                                return false;
                            }
                        }
                    });
                }
            }
        },
        /**
         * 修改
         */
        edit:function(){
            //获取选中的行
            var selectRows = $('#tbVersionManager').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layer.alert('请选择要编辑的数据!',{
                    title: '提示框',
                    icon:0
                });
                return;
            }
            if(selectRows.length>1){
                layer.alert('一次只能编辑的一条数据!',{
                    title: '提示框',
                    icon:0
                });
                return;
            }
            var rowData = selectRows[0];
            //填充数据
            loadData(rowData);
            $("#fileUrl").attr("href",rowData.downloadUrl).show();
            getObjByName('type', 'select').select2().val(rowData.type).trigger("change");
            getObjByName('updateMode', 'select').select2().val(rowData.updateMode).trigger("change");
            getObjByName('status', 'select').select2().val(rowData.status).trigger("change");
            this.initUploader();//初始化文件上传对象
            this.saveUrl = g_comm.manager_url+'/versionManager/update';
            this.isEditMode = true;
            showLayer("编辑App版本","operation_data",800,600);
        },
        add:function(){
            this.initUploader();//初始化文件上传对象
            $("#fileUrl").hide();
            $("#dataForm")[0].reset();
            getObjByName('type', 'select').select2().val(0).trigger("change");
            getObjByName('updateMode', 'select').select2().val(0).trigger("change");
            getObjByName('status', 'select').select2().val(0).trigger("change");
            this.saveUrl = g_comm.manager_url+'/versionManager/add';
            this.isEditMode = false;
            showLayer("新增App版本","operation_data",800,600);
        }
    },
    mounted:function () {
        this.initTable();
        this.initControl();
    }
});